###############################################################################
# Globals #####################################################################
###############################################################################

__version__ = '0.0.1'
__date__ = 'Date: 2011/01/11'
__author__ = 'Bart Robinson <bartrobinson76@yahoo.com>'
__doc__ = '''
Polygon class.
'''
__all__ = ['polygon']

###############################################################################
# Imports #####################################################################
###############################################################################

from pycgx.geometry.edge import edge

###############################################################################
# Classes and Methods #########################################################
###############################################################################

class polygon:
	'''
	polygon()
	polygon(edges)
	'''
	
	def __init__(self, edges = [edge(), edge(), edge()]):
		self.edgelist = edges
		
	def __call__(self):
		return polygon(self.edgelist)
	
	def points(self):
		points = []
		for edge in self.edgelist:
			for point in edge.points():
				points.append(point)
		return self.unique(points)
		
	def edges(self, edges = None):
		if edges != None:
			self.edgelist = edges
		else:
			return self.edgelist

	def unique(self, seq, id=None): 
		if id is None:
			def id(x): return x
		seen = {}
		result = []
		for item in seq:
			marker = id(item)
			if marker in seen: continue
			seen[marker] = 1
			result.append(item)
		return result